package com.sentrix.auto.printercenter.infrastructure.config;

import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.filter.SaServletFilter;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.servlet.error.SaServletErrorCode;
import cn.dev33.satoken.stp.StpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Slf4j
@Configuration
public class SaTokenConfig implements WebMvcConfigurer {
    @Value("${server.error.path:${error.path:/error}}")
    private String errorPath;

    /**
     * 注册 Sa-Token 拦截器，打开注解式鉴权功能
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        registry.addInterceptor(new SaInterceptor(handle -> {
////            StpUtil.checkLogin();
//            SaRouter.match("/**", "/user/doLogin", r -> StpUtil.checkLogin());
//        }).isAnnotation(false)).addPathPatterns("/**").excludePathPatterns(errorPath);

    }

//    @Bean
//    public SaServletFilter getSaServletFilter() {
//        return new SaServletFilter()
//                .setBeforeAuth(r -> {
//                    SaHolder.getResponse().setHeader("Access-Control-Allow-Origin", "*");
//                    // 放行OPTIONS请求
//                    if ("OPTIONS".equals(SaHolder.getRequest().getMethod())) {
//                        return;
//                    }
//
//                    // 2. 放行 WebSocket 相关路径（关键配置）
//                    // 匹配所有以 "/ws/" 开头的路径（WebSocket 连接路径），直接放行
//                    SaRouter.match("/ws/agent")
//                            .free(s -> log.info("WebSocket 路径放行：{}", SaHolder.getRequest().getUrl()));
//
//                    SaRouter.match("/api/**").check(s -> StpUtil.checkLogin());
//                })
//                .addInclude("/**")
//                .addExclude("/favicon.ico")
//                .setAuth(r -> {
//
//                })
//                .setError(e -> {
//                    return "鉴权失败" + e.getMessage();
//                });
//    }

}
